\documentclass{report}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{textcomp}
\usepackage{geometry}
\geometry{top=15mm, bottom=15mm, left=1cm, right=1cm}
\usepackage[french]{babel}
\usepackage{pslatex}
\usepackage[colorlinks=true,urlcolor=black]{hyperref}
\usepackage{graphicx}
\usepackage{fancyhdr}
\pagestyle{fancy}
\renewcommand{\footrulewidth}{0.4pt}
\fancyfoot[L]{Uubu.fr}
\fancyfoot[R]{ven. juil. 16 14:45:21 CEST 2010}
\lfoot{\Large \textit{Uubu.fr}}
\hypersetup{pdfinfo={
Title={Permissions de fichiers},
Author={Sylvain Girod},
Creator={Bash script from uubu.fr's format version 1},
Producer={Bash script and PDFLaTeX},
Subject={Description des permissions de fichiers},
CreationDate={D:20100716144521},
ModDate={D:20100716144521},
Keywords={coreutils;GNU}
}}
\begin{document}
 
\begin{center}
{\Huge Permissions de fichiers }
\end{center}
\vspace{1cm}
 
\begin{flushleft}
 
{\large Description des permissions de fichiers}
 
\vspace{10mm}
 
\vspace{1cm}{\huge Structure des bits de mode de fichier }
 
\
 
\hspace{1mm}  Les bits de mode de fichier ont 2 parties, les bits de permission de fichier et les bits de mode spéciaux.
\vspace{5mm} \\
 
 
\hspace{1mm}  Il y'a 3 types de permission que l'utilisateur peut avoir pour un fichier:
\vspace{5mm} \\
 
 
\begin{description} \normalsize
\item[\hspace{6mm} 1.]{permission de lire le fichier. pour les répertoires, permission de lister le contenu.}
\item[\hspace{6mm} 2.]{permission d'écrire dans le fichier. pour les répertoire, permet de créer et supprimer des fichiers.}
\item[\hspace{6mm} 3.]{Permission d'exécuter le fichier. pour les répertoires, permet d'accéder aux fichiers.}
\end{description}
 
\hspace{1mm}  Il y'a 3 catégories d'utilisateurs que peuvent avoir différentes permissions:
\vspace{5mm} \\
 
 
\begin{description} \normalsize
\item[\hspace{6mm} 1.]{le propriétaire du fichier}
\item[\hspace{6mm} 2.]{les autres utilisateurs qui sont dans le groupe du fichier}
\item[\hspace{6mm} 3.]{Tous les autres.}
\end{description}
 
\hspace{1mm}  Les fichiers ont un propriétaire et un groupe quand ils sont crées. Généralement le propriétaire est l'utilisateur courant et le groupe est le groupe du répertoire, mais celà dépend des systèmes, le système de fichier, et la manière dont il est créé.
\vspace{5mm} \\
\hspace{1mm}  En plus des 3 catégories de permission, les bits de mode ont 3 composants spéciaux, qui affectent seulement les fichiers exécutables et les répertoires:
\vspace{5mm} \\
 
 
\begin{description} \normalsize
\item[\hspace{1mm} 1.]{Définis l'ID de l'utilisateur effectif du processus, appelé le bit \textbf{set-user-ID} ou bit \textbf{setuid}. Pour les répertoires, donne aux fichiers crées le même propriétaire, et définis le \textbf{set-user-ID} pour les sous-répertoire crées.}
\item[\hspace{1mm} 2.]{Définis l'ID du groupe effectif du processus, appelé le bit \textbf{set-group-ID} ou bit \textbf{setgid}. Pour les répertoires, donne aux fichiers crées le même groupe, et définis le set-group-ID pour les sous-répertoire crées.}
\item[\hspace{1mm} 3.]{Empêche les utilisateurs non privilégiés de supprimer ou renommer un fichier dans un répertoire à moins qu'ils aient leur propre fichiers dans ce répertoire. appelé le \textbf{restricted deletion flag}. Pour les fichiers réguliers sur de vieux systèmes, sauver l'image du programme dans le périphérique swap pour qu'il se charge plus rapidement. Appelé le \textbf{sticky bit}.}
\end{description}
 
\hspace{1mm}  En plus des bits de mode de fichiers ci-dessus, il y'a des attributs de fichiers spécifiques aux systèmes de fichier. Par exemple les ACL, si un fichier est compressé, si un fichier peut être modifié, et si un fichier peut être dumpé. ex:
\vspace{5mm} \\
 
 
\begin{description} \normalsize
\item[\hspace{6mm} ext2]{Les attributs spécifiques à ce système de fichier se paramètre avec \textbf{chattr}}
\item[\hspace{6mm} FFS]{Les attributs spécifiques à ce système de fichier se paramètre avec \textbf{chflags}}
\end{description}
 
\vspace{1cm}{\huge Modes Symboliques }
 
\
 
\hspace{1mm}  les modes symboliques représentent les changements des bits de mode des fichiers. Le format des modes symboliques est:
\vspace{5mm} \\
\hspace{1mm}  \textbf{[ugoa...][+-=]PERMS...[,...]}
\vspace{5mm} \\
 
 
\begin{description} \normalsize
\item[\hspace{6mm} u]{Le propriétaire du fichier}
\item[\hspace{6mm} g]{Les utilisateur du groupe du fichier}
\item[\hspace{6mm} o]{tous les autres}
\item[\hspace{6mm} a]{tous les utilisateurs, identique à ugo}
\item[\hspace{6mm} ]{}
\item[\hspace{6mm} +]{Ajouter les permissions}
\item[\hspace{6mm} -]{supprimer les permissions}
\item[\hspace{6mm} =]{définir les permissions}
\item[\hspace{6mm} ]{}
\item[\hspace{6mm} r]{permission en lecture}
\item[\hspace{6mm} w]{permission en écriture}
\item[\hspace{6mm} x]{permet d'exécution.}
\end{description}
 
\vspace{1cm}{\huge Exemples }
 
\
 
\hspace{1mm} donne accès en lecture/écriture pour tous les utilisateurs: \\
\hspace{1mm} \textbf{a=rw} \\
\hspace{1mm} Supprime les permissions en écriture à tous les utilisateurs autre que le propriétaire: \\
\hspace{1mm} \textbf{go-w} \\
\hspace{1mm} supprimer tous les droits à tous le monde excepté le propriétaire: \\
\hspace{1mm} \textbf{go=} \\
\hspace{1mm} \textbf{ou} \\
\hspace{1mm} \textbf{og-rwx} \\
 
\vspace{1cm}{\huge Copier les permissions existantes }
 
\
 
\hspace{1mm}  Il est possible de baser les permissions d'un fichier sur des permissions existantes. Il faut utiliser \textbf{u}, \textbf{g} ou \textbf{o}. Par exemple le mode \textbf{o+g} copie les permissions du groupe aux autres utilisateurs.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Changer les bits de mode spéciaux }
 
\
 
\begin{description} \normalsize
\item[\hspace{1mm} ]{Pour définir le bits \textbf{setuid}, utiliser \textbf{u} pour la partie user et \textbf{s} dans la partie permissions}
\item[\hspace{1mm} ]{Pour définir le bits \textbf{setgid}, utiliser \textbf{g} pour la partie user et \textbf{s} dans la partie permissions}
\item[\hspace{1mm} ]{pour définir les bits \textbf{setuid} et \textbf{setgid}, omettre la partie user (ou utiliser \textbf{a}), et \textbf{s} dans la partie permissions}
\item[\hspace{1mm} ]{Pour définir le \textbf{restricted deletion flag} ou le \textbf{sticky bit}, omettre la partie \textbf{user} (ou utiliser \textbf{a}) et \textbf{t} dans la partie permissions}
\end{description}
 
\vspace{1cm}{\huge Exemples }
 
\
 
\hspace{1mm} définir le setuid: \\
\hspace{1mm} \textbf{u+s} \\
\hspace{1mm} supprimer le setuid et setgid: \\
\hspace{1mm} \textbf{a-s} \\
\hspace{1mm} définit le restricted deletion flag ou le sticky bit: \\
\hspace{1mm} \textbf{+t} \\
 
\vspace{1cm}{\huge Exécution conditionnelle }
 
\
 
\hspace{1mm}  utiliser '\textbf{X}' au lieu de '\textbf{x}' affecte le droit d'exécution/recherche si le fichier est un répertoire ou avait déjà les permissions d'exécution. Par ex: \textbf{a+X} donne à tous les utilisateurs le droit de recherche dans les répertoires, ou d'exécuter les fichiers si quelqu'un pouvait les exécuter avant.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Effectuer plusieurs changements }
 
\
 
\hspace{1mm}  Il y'a 2 manières d'effectuer des changement multiples.
\vspace{5mm} \\
 
 
\hspace{1mm} La première manière est de spécifier plusieurs opérations. Par exemple, donner aux utilisateurs autre que le propriétaire la permission de lire et si c'est un répertoire ou si quelqu'un avait le droit de l'exécuter, de le faire également. et refuse l'écriture: \\
\hspace{1mm} \textbf{og+rX-w} \\
\hspace{1mm} La deuxième manière est de spécifier plus d'un mode symbolique simple. Par exemple, donner à tous le droit en lecture mais refuser l'écriture pour tous les utilisateurs hormis le propriétaire: \\
\hspace{1mm} \textbf{a+r,go-w} \\
\hspace{1mm} Définir explicitement toutes les permissions \\
\hspace{1mm} \textbf{u=rwx,g=rx,o=} \\
\hspace{1mm} Les 2 méthodes peuvent être combinées \\
\hspace{1mm} \textbf{a+r,g+x-W} \\
\hspace{1mm} Donner à tous les utilisateurs le droit en lecture, donner au groupe le droit d'exécution/recherche, mais pas en écriture \\
\hspace{1mm} \textbf{u+r,g+rx,o+r,g-w} \\
 
\vspace{1cm}{\huge Umask et protection }
 
\
 
\hspace{1mm}  Si la partie user d'un mode symbolique est omis, le défaut est \textbf{a}, excepté pour les permissions qui sont définies dans la variable système \textbf{umask}. La valeur de \textbf{umask} peut être définie en utilisant la commande \textbf{umask}. Sa valeur par défaut varie d'un système à l'autre.
\vspace{5mm} \\
\hspace{1mm}  Omettre la partie user d'un mode symbolique n'est généralement pas très utile sauf avec '\textbf{+}', cela permet d'utiliser \textbf{umask} comme protection facilement personnalisable.
\vspace{5mm} \\
 
 
\hspace{1mm} Par exemple, si umask a la valeur 2, qui supprime les permissions en écriture pour les utilisateurs qui ne sont pas dans le groupe du fichier, alors le mode \\
\hspace{1mm} \textbf{+w} \\
\hspace{1mm} ajoute la permission au fichier et son propriétaire et au groupe, mais pas aux autres utilisateurs \\
\hspace{1mm} \textbf{a+w} \\
\hspace{1mm} ignore umask, et donne le droit à tous les utilisateurs \\
 
\vspace{1cm}{\huge Modes numériques }
 
\
 
\hspace{1mm}  Il est possible de spécfier le mode symbolique en octal. Ce nombre est toujours interprété en octal. Il n'est pas necessaire de rajouter des 0, comme en C. 0055 est le même que 55.
\vspace{5mm} \\
 
 
\begin{description} \normalsize
\item[\hspace{6mm} ]{Tous les autres utilisateurs}
\item[\hspace{6mm} 1]{Exécution/recherche}
\item[\hspace{6mm} 2]{Écriture}
\item[\hspace{6mm} 4]{Lecture}
\item[\hspace{6mm} ]{Les utilisateurs dans le groupe du fichier}
\item[\hspace{6mm} 10]{Exécution/recherche}
\item[\hspace{6mm} 20]{Écriture}
\item[\hspace{6mm} 40]{Lecture}
\item[\hspace{6mm} ]{Le propriétaire}
\item[\hspace{6mm} 100]{Exécution/recherche}
\item[\hspace{6mm} 200]{Écriture}
\item[\hspace{6mm} 400]{Lecture}
\item[\hspace{6mm} ]{bits de mode spéciaux}
\item[\hspace{6mm} 1000]{Restricted deletion flag ou sticky bit}
\item[\hspace{6mm} 2000]{Set group ID}
\item[\hspace{6mm} 4000]{Set user ID}
\end{description}
 
\vspace{1cm}{\huge Répertoires avec Set-User-ID et Set-Group-ID }
 
\
 
\hspace{1mm}  Sur beaucoup de systèmes, si un répertoire a le \textbf{setgid} de mis, les fichiers nouvellement crées héritent du même groupe que le répertoire, et les sous-répertoire nouvellement crées héritent du \textbf{setgid}. Sur certains systèmes, le \textbf{setuid} a le même effet. Ce mécanisme permet aux utilisateurs de partager des fichiers facilement. Les commandes comme \textbf{chmod} et \textbf{mkdir} effacent ces bits généralement.
\vspace{5mm} \\
 
 
\hspace{6mm} ces commandes laissent le setuid et setgid des sous-répertoires: \\
\hspace{6mm} \textbf{mkdir A B C} \\
\hspace{6mm} \textbf{chmod 755 A} \\
\hspace{6mm} \textbf{chmod 0755 B} \\
\hspace{6mm} \textbf{chmod u=rwx,go=rx C} \\
\hspace{6mm} \textbf{mkdir -m 755 D} \\
\hspace{6mm} \textbf{mkdir -m 0755 E} \\
\hspace{6mm} \textbf{mkdir -m u=rwx,go=rx F} \\
\hspace{6mm} ces commandes essayent de définit setuid et setgid sur les sous-répertoires: \\
\hspace{6mm} \textbf{mkdir G H} \\
\hspace{6mm} \textbf{chmod 6755 G} \\
\hspace{6mm} \textbf{chmod u=rwx,go=rx,a+s H} \\
\hspace{6mm} \textbf{mkdir -m 6755 I} \\
\hspace{6mm} \textbf{mkdir -m u=rwx,go=rx,a+s J} \\
\hspace{6mm} cette commande essaye de supprimer setuid et setgid du répertoire D: \\
\hspace{6mm} \textbf{chmod a-s D} \\
\end{flushleft}
\end{document}
